From: Jeroen van der Heijden Date: Mon, 18 Jun 2018 06:33:52 +0000 (+0200) Subject: Fixed issue #98 and added tests X-Git-Tag: archive/raspbian/2.0.44-1+rpi1~1^2~3^2~9^2~14 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/success//%22http:/www.example.com/cgi/success/?a=commitdiff_plain;h=cfd1dc0b502b54f296d69c4f10d9c5542725e011;p=siridb-server.git Fixed issue #98 and added tests --- diff --git a/src/cexpr/cexpr.c b/src/cexpr/cexpr.c index c1ab78a8..89915f35 100644 --- a/src/cexpr/cexpr.c +++ b/src/cexpr/cexpr.c @@ -266,8 +266,8 @@ int cexpr_run(cexpr_t * cexpr, cexpr_cb_t cb, void * obj) cb(obj, cexpr->via_b.cond)); default: log_critical("operator must be AND or OR, got: %d", cexpr->operator); - assert (0); } + assert (0); return -1; /* this should NEVER happen */ } diff --git a/src/siri/db/aggregate.c b/src/siri/db/aggregate.c index 08c30069..898c0541 100644 --- a/src/siri/db/aggregate.c +++ b/src/siri/db/aggregate.c @@ -641,6 +641,12 @@ static siridb_points_t * AGGREGATE_derivative( siridb_aggr_t * aggr, char * err_msg) { + if (source->tp == TP_STRING) + { + sprintf(err_msg, "Cannot use derivative() on string type."); + return NULL; + } + size_t len = source->len - 1; siridb_points_t * points = siridb_points_new(len, TP_DOUBLE); @@ -698,6 +704,12 @@ static siridb_points_t * AGGREGATE_difference( siridb_points_t * source, char * err_msg) { + if (source->tp == TP_STRING) + { + sprintf(err_msg, "Cannot use difference() on string type."); + return NULL; + } + size_t len = source->len - 1; siridb_points_t * points = siridb_points_new(len, source->tp); @@ -1096,7 +1108,7 @@ static int aggr_derivative( if (points->tp == TP_STRING) { - sprintf(err_msg, "Cannot use difference() on string type."); + sprintf(err_msg, "Cannot use derivative() on string type."); return -1; } diff --git a/test/test_select.py b/test/test_select.py index 2f7e6822..2ed866db 100644 --- a/test/test_select.py +++ b/test/test_select.py @@ -344,6 +344,21 @@ class TestSelect(TestBase): 'select * from "aggr" ' 'merge as "t" using filter("0")') + with self.assertRaisesRegexp( + QueryError, + 'Cannot use difference\(\) on string type\.'): + await self.client0.query('select difference() from "log"') + + with self.assertRaisesRegexp( + QueryError, + 'Cannot use derivative\(\) on string type\.'): + await self.client0.query('select derivative(6, 3) from "log"') + + with self.assertRaisesRegexp( + QueryError, + 'Cannot use derivative\(\) on string type\.'): + await self.client0.query('select derivative() from "log"') + with self.assertRaisesRegexp( QueryError, 'Overflow detected while using sum\(\)\.'): @@ -443,7 +458,6 @@ class TestSelect(TestBase): await self.client0.query( 'alter database set select_points_limit 1000000') - self.client0.close() return False